#!/bin/sh
#set -x
###########################################################################################
#脚本名称:      Version_Control.sh
#脚本功能:      手工方式提交版本信息 包括添加和查询版本信息功能
#涉及文件:      
#脚本调用:      sh Version_Control.sh -add 类型 下发版本的日期 方案名称 模块名称 版本号 备注 (备注为非必输项，其他均为必输项)
#		Version_Control.sh -show -v 版本号 -d 下发版本日期 -r 备注 -m 模块名称 -t 方案名称 -D 实际更新日期 
#脚本参数:      job_flow_id 作业流ID branch 分行号 biz_date 业务日期 batch_no 批次号
#输出文件:
#返回值  :
#使用实例:      1. 添加版本登记信息
#		Version_Control.sh -add 类型 下发版本的日期 方案名称 模块名称 版本号 备注 (备注为非必输项，其他均为必输项)
#		sh Version_Control.sh -add 1 20090110 "平台组上线" "事件管理模块" V2.3 "更新event_manager_server执行码和libH010_EMS_LOG.so动态库"
#		2. 显示版本更新内容
#		Version_Control.sh -show 显示全部内容
#		Version_Control.sh -show -v  V2.3    显示 版本号是V2.3的版本信息
#		Version_Control.sh -show -d 20090101 显示 下发版本的日期是 20090101的版本记录
#		Version_Control.sh -show -r "PMIS_CBAPP_CUR" 显示备注中包含 PMIS_CBAPP_CUR的版本记录
#		Version_Control.sh -show -m "事件管理" 显示模块名称包含事件管理的版本信息
#		Version_Control.sh -show -t "新模型变更方案" 显示方案名称中包含新模型变更方案的版本信息
#		Version_Control.sh -show -D 20090110 显示 实际更新日期是 20090110 的版本信息
#		Version_Control.sh -show -r "PMIS_CBAPP_CUR" -m "事件管理" -D 20090110 复合设立条件
#编写人  :      mrk
#编写日期:      2009/01/05
###########################################################################################
# 参数判断
VERSION="V1.0"
usage()
{
	echo "脚本名称:      Version_Control.sh  ${VERSION}"
	echo "脚本功能:      手工方式提交版本信息 包括添加和查询版本信息功能"
	echo ""
	echo "		1. 添加版本登记信息"
	echo "		Version_Control.sh -add 类型 下发版本的日期 方案名称 模块名称 版本号 备注 (备注为非必输项，其他均为必输项)"
	echo "		例如："
	echo "		sh Version_Control.sh -add 1 20090110 \"平台组上线\" \"事件管理模块\" V2.3  \"更新event_manager_server执行码和libH010_EMS_LOG.so动态库\""
	echo "----------------------------------------------------------------------------------------------------------------------"
	echo ""
	echo "		2. 显示版本更新内容"
	echo "		Version_Control.sh -show -v 版本号 -d 下发版本日期 -r 备注 -m 模块名称 -t 方案名称 -D 实际更新日期"
	echo "		例如："
	echo "		Version_Control.sh -show 显示全部内容"
	echo "		Version_Control.sh -show -v  V2.3    --显示 版本号是V2.3的版本信息"
	echo "		Version_Control.sh -show -d 20090101 显示 下发版本的日期是 20090101的版本记录"
	echo "		Version_Control.sh -show -r "PMIS_CBAPP_CUR" 显示备注中包含 PMIS_CBAPP_CUR的版本记录"
	echo "		Version_Control.sh -show -m "事件管理" 显示模块名称包含事件管理的版本信息"
	echo "		Version_Control.sh -show -t "新模型变更方案" 显示方案名称中包含新模型变更方案的版本信息"
	echo "		Version_Control.sh -show -D 20090110 显示 实际更新日期是 20090110 的版本信息"
	
}

if [ "$ODSUSER"x = ""x -o "$ODSPASSWD"x = ""x -o "$DBSID"x = ""x ]
then
        echo "请检查环境变量 [\$ODSUSER] [\$ODSPASSWD] [\$DBSID] 是否为空" 
        exit 1
fi

param_num=$#

	Ver_Type_add=$2
	Ver_date_add=$3
	task_add=$4
	module_add=$5
	Ver_add=$6
	remark_add=$7

while true
do 
	if [ "$1"x = "-add"x ]
	then
		type_flag="add"
	fi
	if [ "$1"x = "-show"x ]
	then
		type_flag="show"
	fi
	if [ "$1"x = "-v"x ]
	then
		shift 1
		Ver=$1
	fi
	if [ "$1"x = "-d"x ]
	then
		shift 1
		Ver_date=$1
	fi
	if [ "$1"x = "-r"x ]
	then
		shift 1
		remark=$1
	fi
	if [ "$1"x = "-D"x ]
	then
		shift 1
		Update_date=$1
	fi
	if [ "$1"x = "-m"x ]
	then
		shift 1
		module=$1
	fi
	if [ "$1"x = "-t"x ]
	then
		shift 1
		task=$1
	fi
	shift 1
	if [ $# -eq 0 ]
	then
		break
	fi
done

if [ "$type_flag"x = ""x ]
then
	echo "参数个数错误"
	usage
	exit 90
fi

if [ "$type_flag"x = "add"x ]
then
	if [ ${param_num} != "7" ] && [ ${param_num} != "6" ]
	then
		usage
		exit 90
	fi

Date=`date +%Y%m%d%T`

retstr=$(sqlplus -s $ODSUSER/$ODSPASSWD@$DBSID<< TMP 
SET ECHO OFF NEWP 0 SPA 0 PAGES 0 FEEDBACK OFF HEAD OFF TRIMS ON
WHENEVER SQLERROR EXIT SQL.SQLCODE

insert into f_ods_version_control (version_type ,version_date ,task_name, Module_name,version_num,update_date,version_remark) values ('${Ver_Type_add}',to_date('${Ver_date_add}','yyyymmdd'),'${task_add}','${module_add}','${Ver_add}',to_date('${Date}','yyyymmdd hh24:mi:ss'),'${remark_add}');
commit;
exit;
TMP
)
ret=$?
if [ $ret != 0 ]
then
	echo "插入 f_ods_version_control 错误,错误原因 ${retstr}"
	exit 92
else
	echo "插入 f_ods_version_control成功 "
fi
elif [ "$type_flag"x = "show"x ]
then
	if [ "${Ver_date}"x != ""x ] 
	then
		where_char=" and ver_date=to_date(${Ver_date},'yyyymmdd')"
	else
		where_char=""
	fi
echo "=== 版本信息 ==="
echo "-------------------------------------------------------------------------------------------------------------------------"
printf  "%4s %8s %8s %16s %16s %6s %17s %s\n" "序号" "版本类型" "版本日期" "方案名称" "模块名称" "版本号" "更新日期" "备注" 
echo "-------------------------------------------------------------------------------------------------------------------------"
sqlplus -s $ODSUSER/$ODSPASSWD@$DBSID<<TMP
SET ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON
SET HEAD OFF
WHENEVER SQLERROR EXIT SQL.SQLCODE
select rownum||'|'||case version_type when '1' then '平台版本'
	                 when '2' then '总行应用版本'
			 when '3' then '分行特色应用版本'
end||'|'||to_char(version_date,'yyyymmdd')||'|'||task_name ||'|'||Module_name ||'|'||version_num ||'|'||to_char(update_date,'yyyymmdd hh24:mi:ss')||'|'||trim(version_remark)||'|'  from f_ods_version_control
where 1=1 ${where_char} and task_name like '%${task}%' and  Module_name like '%${module}%' and version_num like '%${Ver}%' and version_remark like '%${remark}%';
exit;

TMP
ret=$?
if [  $ret != 0 ]
then
	echo "插入 f_ods_version_control 错误,错误原因 ${retstr}"
	exit 92
fi
echo "-------------------------------------------------------------  end  --------------------------------------------------------"

fi

exit 0
